﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MathLib;
using TrackingSim.Filtering.Kinematics;
using TrackingSim.Filtering.Measurements;
using TrackingSim.GameSystem;

namespace TrackingSim.Filtering.Tracks
{
    public abstract class Track : IVisitor
    {
        double time;
        KinematicState kinematic_state;

        protected Track(double _time)
        {
            time = _time;
        }

        public virtual Track clone()
        {
            return null;
        }

        public double Time
        {
            get { return time; }
            set { time = value; }
        }

        public KinematicState KS
        {
            get { return kinematic_state; }
            set { kinematic_state = value; }
        }

        public abstract void visit(Razel razel, Player p);

        public abstract void init(Player p, Measurement meas);

        public abstract void update(Measurement meas, Player p);
        public abstract void update(Razel meas, Player p);
    }
}
